Objetos de base de datos
Vista
Es un objeto de los RDBMS que encapsula una consulta SQL y se almacena en la base de datos.
La función de la vista es proveer una capa de seguridad para la consulta de los datos. Con las vistas, puede pasarle a un programador una determinada selección de datos de los que puede consultar, en vez de toda la base de datos.
Otras funciones son mejorar la administración de permisos (solo doy permisos a las vistas y no estoy pensando en los permisos a las tablas), optimizar las consultas (las consultas muy difíciles) y expresividad (llamar a la vista que tiene un nombre copado en vez de hacer la consulta).
- Deben tener un encabezado por columna (por ejemplo cuando haces un COUNT(*) debes ponerle un nombre. Si traes un campo, no se necesita)
- Permiten inserciones/modificaciones/eliminaciones siempre que éstas afecten a una sola tabla, si quiero eliminar la consulta SQL debe tener una sola tabla en el FROM, funciones de agregación, DISTINCT, UNION, UNION ALL, GROUP BY, HAVING, etc.
- No permiten índices (aunque en motores nuevos si se permiten)
- No permiten triggers (aunque en motores nuevos si se permiten)
- No permiten ORDER BY ni UNION
Función
Es un objeto de los RDBMS que se conforma de muchas sentencias SQL y se almacena en la base de datos.
Algunas de las funciones son mejorar la expresividad (le doy un nombre al conjunto de sentencias complejas), evitar la repetición de código (por la característica de las funciones), reducen el tráfico de red (solamente se envía una instrucción en vez de todas las que componen la función).
Procedimiento
Es un objeto de los RDBMS que se conforma de muchas sentencias SQL y se almacena en la base de datos.
Una de las funciones de los procedimientos es proveer seguridad e integridad de los datos. Puedo pasarle a un desarrollador una determinada cantidad de procedimientos que pegan contra una base de datos para que obtenga de ahí todo lo que necesita y además actualice con ellos todo lo que necesita. Los detalles para asegurar la integridad los maneja el administrador de la base de datos dentro de los procedimientos. De esta manera, evito que se acceda directamente a las tablas de la base.
Otras funciones son mejorar la expresividad (ponerle un nombre copado al conjunto de sentencias), evitar la repetición de código (por la característica de los procedimientos), reducir el tráfico de red (solamente se envía una instrucción en vez de todas las que componen el procedimiento), tener un solo punto de ingreso (lo que me permite reducir los puntos de fallas).
Trigger
Es un objeto de los RDBMS que se conforma de sentencias SQL y se almacena en la base de datos.
La función del trigger es ejecutar automáticamente ciertas acciones antes/en vez/después de determinado evento. Las acciones pueden ser inserciones, modificaciones o eliminaciones. Los eventos pueden ser inserciones, modificaciones o eliminaciones sobre una determinada tabla o vista.
La función conceptual es mantener la integridad referencial (fundamentalmente con otras bases de datos) y la coherencia de los datos (mediante reglas de negocios).
- Puede pasar que haya llamadas a triggers recursivas, pero estas se desactivan con sentencias especiales
Indice
Es una estructura asociada a las tablas, propias de los RDBMS.
La función del índice es optimizar el acceso a los datos, haciendo más eficientes y aumentando el rendimiento de las consultas (ya que se reducen las operaciones de entradas/salidas. Además es porque los datos se pueden guardar en los índices, lo que también reduce la entrada y salida. Y además se pueden acceder más rápido por no recorrer la tabla secuencialmente para hallar los valores buscados). Es útil cuando hay miles de registros y cuando hay ordenamientos o agrupamientos.
La desventaja es que ocupan espacio en el disco (no usable para datos) y que requieren de mantenimiento (cada vez que hay una nueva inserción, modificación y eliminación).
- Se crean automáticamente índices para las columnas PRIMARY KEY y UNIQUE
- Se puede indexar un campo o varios
- No se puede indexar campos con valores duplicados
- Conviene en columnas con filtros, joins o que se usan para order by